package priv.pattern.staticproxy.dynamicagency;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

/*
 * 作者：m鹏h
 * 时间；2024/7/30 17:16
 * 描述：代理对象
 **/
public class ProxyFactory {
 private Object target;
 //构造器 ， 对target 进行初始化
 public ProxyFactory(Object target) {
  this.target = target;
 }
 //动态生成一个代理对象
 public Object getProxyInstance() {
  return Proxy.newProxyInstance(target.getClass().getClassLoader(),
          target.getClass().getInterfaces(),
          new InvocationHandler() {
           @Override
           public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            System.out.println("动态代理开始");
            Object returnVal = method.invoke(target, args);//反射机制调用目标对象的方法
            System.out.println("动态代理结束");
            return returnVal;
           } //匿名类重写invoke方法
          });
 }
}
